﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Wedn.DAL;
using Wedn.Model.Data;

namespace Wedn.BLL.Data
{
    /// <summary>
    /// 链接管理类(初步审核通过)
    /// 抽象类不允许被实例化
    /// </summary>
    public class MetasManager
    {
        #region 增加拓展元数据
        /// <summary>
        /// 向拓展元数据表中插入一行数据, 返回执行是否成功
        /// </summary>
        /// <param name="meta">要插入的对象</param>
        /// <returns>执行是否成功</returns>
        public static bool Insert(Meta meta)
        {
            return MetasDAO.Insert(meta) > 0 ? true : false;
        }
        #endregion

        #region 删除拓展元数据

        #region 删除一条数据
        /// <summary>
        /// 根据id删除对应的元数据记录, 返回执行是否成功
        /// </summary>
        /// <param name="metaid">要删除记录的ID</param>
        /// <returns>执行是否成功</returns>
        public static bool Delete(int metaid)
        {
            return MetasDAO.Delete(metaid) > 0 ? true : false;
        }
        #endregion

        #region 删除多条数据
        /// <summary>
        /// 根据id数组删除对应的元数据记录, 返回执行是否成功
        /// </summary>
        /// <param name="metaid">要删除记录的ID数组</param>
        /// <returns>执行是否成功</returns>
        public static bool Delete(int[] metaids)
        {
            return MetasDAO.Delete(metaids) == metaids.Length ? true : false;
        }
        #endregion

        #endregion

        #region 更新拓展元数据
        /// <summary>
        /// 更新一个拓展元数据对象, 返回执行是否成功
        /// </summary>
        /// <param name="meta">要更新的对象</param>
        /// <returns>执行是否成功</returns>
        public static bool Update(Meta meta)
        {
            return MetasDAO.Update(meta) > 0 ? true : false;
        }
        #endregion

        #region 选取拓展元数据

        #region 获取表中主键最大值
        /// <summary>
        /// 获取表中主键最大值
        /// </summary>
        /// <returns>主键最大值</returns>
        public static int GetMaxId()
        {
            return MetasDAO.GetMaxId();
        }
        #endregion

        #region 选取全部拓展元数据集合
        /// <summary>
        /// 取出当前拓展元数据表中的所有拓展元数据信息
        /// </summary>
        /// <returns>包涵所有拓展元数据信息的数据表</returns>
        public static List<Meta> GetMetas()
        {
            return MetasDAO.SelectMetas();
        }
        #endregion

        #region 根据对象类型选取拓展元数据集合
        /// <summary>
        /// 取出当前类别下拓展元数据表中的所有拓展元数据信息
        /// </summary>
        /// <returns>包涵指定对象类型的所有拓展元数据信息的数据表</returns>
        public static List<Meta> GetMetas(string objectType)
        {
            return MetasDAO.SelectMetas(objectType);
        }
        #endregion

        #region 根据对象ID和对象类型选取拓展元数据
        /// <summary>
        /// 取出当前类别下拓展元数据表中的所有拓展元数据信息
        /// </summary>
        /// <returns>包涵指定对象类型的所有拓展元数据信息的数据表</returns>
        public static List<Meta> GetMetas(string objectType, int objectId)
        {
            return MetasDAO.SelectMetas(objectType, objectId);
        }
        #endregion

        #region 根据ID选取全部拓展元数据对象
        /// <summary>
        /// 根据ID取出当前拓展元数据表中的拓展元数据对象
        /// </summary>
        /// <returns>拓展元数据对象</returns>
        public static Meta GetMeta(int metaid)
        {
            return MetasDAO.SelectMeta(metaid);
        }
        #endregion

        #endregion
    }
}
